/**
 * H5端将生成的二维码上传到阿里Oss
 * 前端代码如下
 */

// this.$refs.qrcode.toTempFilePath({
// 	success: (res) => {
// 		const base64Data = res.tempFilePath.split(',')[1];
// 		// 保存 Blob 为临时文件并上传
// 		uploadQRcode(base64Data, null, (res) => {
// 			console.log(res);
// 		})

// 		// this.saveBlobAsFile(blob);
// 		// // 创建 URL 对象
// 		// const imageUrl = URL.createObjectURL(blob);
// 		// console.log(imageUrl);
// 		// this.imgUrl=imageUrl
// 	}
// });



// 获取阿里云签名
const getAliyunOssSignature = async () => {
	const objWjf = uniCloud.importObject('wjf-co', {
		loadingOptions: { // loading相关配置
			title: '云端生成ali-oss签名...', // 显示的loading内的提示文字。默认值为：加载中...
			mask: true // 是否使用透明遮罩，配置为true时不可点击页面其他内容。默认值为：true
		}
	})
	return await objWjf.aliOssSignature()
}
import {
	nanoid
} from 'nanoid' //生成唯一字符串库(生成文件名)

/**
 * @param {Object} base64Data 
 * @param {Object} dir Oss存储目录
 * @param {Object} callback
 */

export async function uploadQRcode(base64Data, dir, callback) {
	if (!dir) {
		dir = 'upload-file/'
	}
	const arrayBuffer = uni.base64ToArrayBuffer(base64Data)
	const blob = new Blob([arrayBuffer], {
		type: 'image/png'
	});
	const fileReader = new FileReader();
	fileReader.onloadend = async () => {
		const tempFilePath = fileReader.result; // 临时文件内容
		let resOssSignature = await getAliyunOssSignature()
		let host = resOssSignature.hostUrl
		let accessid = resOssSignature.accessKeyId
		let policy = resOssSignature.policy
		let signature = resOssSignature.signature
		// let dir = 'henghui/images/'
		const fileName = `${dir}${nanoid()}.png`; // 根据时间戳生成文件名
		uni.uploadFile({
			url: host, // OSS 上传 URL
			filePath: tempFilePath,
			name: 'file', // 文件字段名称
			formData: {
				key: fileName,
				policy: policy,
				OSSAccessKeyId: accessid,
				signature: signature,
				success_action_status: '200'
			},
			success: (uploadRes) => {
				if (uploadRes.statusCode === 200) {
					// console.log('上传成功', uploadRes);
					const fileUrl = `${host}/${fileName}`;
					// console.log('文件 URL:', fileUrl);
					callback(fileUrl)
				} else {
					console.error('上传失败', uploadRes);
				}
			},
			fail: (err) => {
				console.error('上传失败', err);
			}
		})
	}

	fileReader.readAsDataURL(blob); // 将 Blob 转换为临时文件
}